/*
 * Comprador.java
 *
 */

package ar.com.educacionit.vehiculos.entidades;

import ar.com.educacionit.base.entidades.Persona;
import ar.com.educacionit.vehiculos.util.EducacionITSessionManager;
import java.io.Serializable;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Sebastian S. Sanga <SebastianSanga@educacionIT.com.ar>
 */
public class Comprador extends Persona implements Serializable{
    
    /**
     * Creates a new instance of Comprador
     */
    public Comprador() {
    }
    
    public Comprador(String nombre, String apellido, String nroDocumento, double presupuesto) {
        super(nombre,apellido,nroDocumento);
        setPresupuesto(presupuesto);
    }
    
    // Atributos
    private double presupuesto;
    
    @Override
    public String toString(){
        return getApellido() + ", " + getNombre();
    }

    public double getPresupuesto() {
        return presupuesto;
    }

    public void setPresupuesto(double presupuesto) {
        this.presupuesto = presupuesto;
    }

    public static List obtenerTodos() throws HibernateException
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Realiza la consulta
        List<Comprador> losComprador = session.createQuery("FROM ar.com.educacionit.vehiculos.entidades.Comprador").list();

        // Cierra la sesion de trabajo
        session.close();

        // Retorna los concesionarios
        return losComprador;

    }

    public void insertar() throws HibernateException
    {

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Inserta el concesionario
        session.save(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }

    public void actualizar() throws HibernateException
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Actualiza el concesionario
        session.update(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }

    public void eliminar() throws HibernateException
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Elimina el concesionario
        session.delete(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();
    }

}
